package com.yikes.srb.service;

import com.yikes.srb.common.result.PageResult;
import com.yikes.srb.leadingModle.form.borrower.*;
import com.yikes.srb.leadingModle.vo.BorrowInfoVO;
import com.yikes.srb.leadingModle.vo.BorrowerDetailVO;
import com.yikes.srb.leadingModle.vo.BorrowerVO;
import com.yikes.srb.mybatis.base.PageForm;
import com.yikes.srb.pojo.entity.Borrower;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.Valid;

/**
 * <p>
 * 借款人 服务类
 * </p>
 *
 * @author guanrong.yin
 * @since 2024-12-03
 */
public interface BorrowerService extends IService<Borrower> {

    /**
     * 列表
     *
     * @param query
     * @return
     */
    PageResult<BorrowerVO> listPage(BorrowerQuery query);

    /**
     * 根据id查询单条信息
     *
     * @param id
     * @return
     */
    BorrowerVO infoId(Long id);

    /**
     * 新增
     * @param form
     */
    void create(@Valid BorrowerAddForm form);

    /**
     * 编辑
     * @param form
     */
    void edit(@Valid BorrowerEditForm form);

    /**
     * 删除
     * @param id
     */
    void del(Long id);

    /**
     * 保存借款人信息
     * @param form
     * @param userId
     */
    void saveBorrowerVOByUserId(BorrowerForm form, Long userId);

    /**
     * 根据用户id获取借款人状态
     * @param userId
     * @return
     */
    Integer getStatusByUserId(Long userId);

    /**
     * 获取借款人信息
     * @param id
     * @return
     */
    BorrowerDetailVO getBorrowerDetailVOById(Long id);

    /**
     * 借款额度审批
     * @param form
     */
    void approval(BorrowerApprovalForm form);

    /**
     * 查询借款额度列表
     * @return
     */
    PageResult<BorrowInfoVO> selectList(String keyword, PageForm page);
}
